package ch.ifage.web;

import java.io.Serializable;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import ch.ifage.web.police.statistiques.policesstat.PoliceStat;
import ch.ifage.web.police.statistiques.policesstat.PoliceStatJDBCImplService;

/**
 * Client de demonstration pour le web service PoliceStat, il permet d acceder a des methodes 
 * retournant des informations de statistiques sur les polices d'assurance.
 * @author Betty Ba
 *
 */
@SessionScoped
@Named("webservice")
public class WebServiceClient implements Serializable {
	
	/** web service. */
	private PoliceStatJDBCImplService service; 
	/**port. */
	private PoliceStat port; 
	/** numero de police. */
	private String numeroA;
	/** numero de police. */
	private String numeroB;
	/** numero de police. */
	private String numeroC;
	/** numero de police. */
	private String numeroD;
	/** prime d une police d assurance.*/
	private double prime;
	/** total des indemnites d une police d assurance. */
	private double total;
	/** difference entre la prime et le total des indemnites. */
	private double difference;
	/** nombre de sinistres d une police d assurance. */
	private int nombreSinistres;
	
	/** initialisaion par le constructeur. */
	public WebServiceClient() {
		this.service = new PoliceStatJDBCImplService();
		this.port = service.getPoliceStatJDBCImplPort();
		this.setNumeroA("police1");
		this.setNumeroB("police1");
		this.setNumeroC("police1");
		this.setNumeroD("police1");
	}
	/** serialisation. */
	private static final long serialVersionUID = 1L;
	/**
	 * * @param specifier le numero de police.
	 */
	public void setNumeroA(String numero) {
		this.numeroA = numero;
	}
	/** * @return numero de police. */
	public String getNumeroA() {
		return this.numeroA;
	}
	/**
	 * * @param specifier le numero de police.
	 */
	public void setNumeroB(String numero) {
		this.numeroB = numero;
	}
	/** * @return numero de police. */
	public String getNumeroB() {
		return this.numeroB;
	}
	/**
	 * * @param specifier le numero de police.
	 */
	public void setNumeroC(String numero) {
		this.numeroC = numero;
	}
	/** * @return numero de police. */
	public String getNumeroC() {
		return this.numeroC;
	}
	/** * @return numero de police. */
	public void setNumeroD(String numero) {
		this.numeroD = numero;
	}
	/** * @return numero de police. */
	public String getNumeroD() {
		return this.numeroD;
	}
	
	/** * @return saisie du numero de police confirmee par un bouton qui met a jour la page. */
	public String WSprime() {
		this.setNumeroA(numeroA);
		return "refresh";
	}
	/** @return appel de la methode prime du web service. */
	public double getPrime() {
		this.prime = this.port.prime(numeroA);
		return this.prime;
		
	}
	/** @return saisie du numero de police confirmee par un bouton qui met a jour la page. */
	public String WStotal() {
		this.setNumeroB(numeroB);
		return "refresh";
	}
	/** @return appel de la methode total du web service. */
	public double getTotal() {
		this.total = this.port.total(numeroB);
		return this.total;
		
	}
	/** @return saisie du numero de police confirmee par un bouton qui met a jour la page. */
	public String WSdifference() {
		this.setNumeroB(numeroC);
		return "refresh";
	}
	/** @return appel de la methode difference du web service. */
	public double getDifference() {
		this.difference = this.port.difference(numeroC);
		return this.difference;
		
	}
	/** @return saisie du numero de police confirmee par un bouton qui met a jour la page. */
	public String WSnombreSinistres() {
		this.setNumeroD(numeroD);
		return "refresh";
	}
	/** @return appel de la methode nombreSinistres du web service. */
	public int getNombreSinistres() {
		this.nombreSinistres = this.port.nombreSinistres(numeroD);
		return this.nombreSinistres;
		
	}
	
}
